<body>

<h3>Table Of Contents</h3>
<li><a href="#spadaptor">SharePoint Adaptor</a></li>
<li><a href="#spuserprofileadaptor">SharePoint User Profile Adaptor</a></li>

<h3 id="spadaptor">Adaptor for SharePoint Deployment</h3>

<p>A single instance of SharePoint adaptor can have GSA index a single 
SharePoint Web Application.  An adaptor instance is needed per Web Applicaton.

<h4>Requirements</h4>
<ul>
  <li>GSA 7.2 or higher
  <li>GSA user authentication configured for authentication system in use
    (typically Active Directory)
  <li>Java JRE on computer that runs adaptor (1.6u27 or higher on Linux;
      1.7u6 or higher on Windows)
  <li>SharePoint adaptor JAR executable
  <li>User account, with Full Read permissions to SharePoint Web
    Application, in the User Policy
  <li>If running adaptor on Linux, user account used for running adaptor 
    should belongs to same domain as SharePoint server. User from child domain 
    or from same forest is not sufficient.
  <li>If running adaptor on Windows 7, Windows Server 2008, Windows Server 2008 R2
    or Windows Server 2012 machine:
    <p>
    <b>Specify LAN Manager Authentication Level Policy</b>
    <ol>
    <li>Run <code>secpol.msc</code> on adaptor machine
    <li>Under Security settings, navigate to Local policies > Security options.
    <li>Select <b>Network security: LAN Manager authentication level</b> and 
        set it to <b>Send LM &amp; NTLM - use NTLMv2 session security if negotiated</b>.   
    </ol>
    </p>
</ul>

<h4>Configure GSA for Adaptor</h4>
<ol>
  <li>Add the IP address of the computer that hosts the adaptor to the <b>List
    of Trusted IP Addresses</b> on the GSA.
    <p>In the GSA's Admin Console, go to <b>Content Sources &gt; Feeds</b>,
    and scroll down to <b>List of Trusted IP Addresses</b>. Add the IP address
    for the adaptor to the list.
  <li>Add the URLs provided by the adaptor to the <b>Follow Patterns</b> on the GSA.
    <p>In the Admin console, go to <b>Content Sources &gt; Web Crawl &gt; 
    Start and Block URLs</b>, and scroll down to <b>Follow Patterns</b>.
    Add an entry like <code>http://adaptor.example.com:5678/doc/
    </code> where <code>adaptor.example.com</code> is the hostname of the
    machine that hosts the adaptor. By default the adaptor runs on port 5678.
</ol>

<h4>Configure Adaptor</h4>
<ol>
  <li>Create a file named <code>adaptor-config.properties</code> in the
  directory that contains the adaptor binary. Within the file, provide the
  configuration (replacing bolded items with your real configuration):
  <pre>gsa.hostname=<b>yourgsa.example.com</b>
sharepoint.server=<b>http://yoursharepoint.example.com/</b></pre>

  <li>If the adaptor will <em>not</em> be running as the user account that has
  appropriate SharePoint permissions, then add these additional configuration
  options to <code>adaptor-config.properties</code>:
  <pre>sharepoint.username=<b>YOURDOMAIN\\AdaptorUser</b>
sharepoint.password=<b>uS3R_passWoRD</b></pre>
  
  <li>If the adaptor needs to use <em>Live Authentication</em> to connect 
  to SharePoint, then add these additional configuration options 
  to <code>adaptor-config.properties</code>:
  <pre>sharepoint.username=<b>AdaptorUser Live Authentication Id</b>
sharepoint.password=<b>uS3R_passWoRD</b>
sharepoint.useLiveAuthentication=<b>true</b></pre>
  
  <li>If the adaptor needs to use <em>ADFS Authentication</em> to connect 
  to SharePoint, then add these additional configuration options 
  to <code>adaptor-config.properties</code>:
  <pre>sharepoint.username=<b>AdaptorUser@yourdomain.com</b>
sharepoint.password=<b>uS3R_passWoRD</b>
sharepoint.sts.endpoint=<b>https://adfs.exaple.com/adfs/services/trust/2005/usernamemixed
</b>sharepoint.sts.realm=<b>urn:myserver:sharepoint</b> or <b>https://yoursharepoint.example.com/_trust</b></pre>

  <li>Create a folder named <code>logs</code> in the same directory.

  <li>Create a file named <code>logging.properties</code> in the same directory
  that contains logging configuration:
  <pre>
.level=INFO
handlers=java.util.logging.FileHandler,java.util.logging.ConsoleHandler
java.util.logging.FileHandler.formatter=com.google.enterprise.adaptor.CustomFormatter
java.util.logging.FileHandler.pattern=logs/adaptor.%g.log
java.util.logging.FileHandler.limit=10485760
java.util.logging.FileHandler.count=20
java.util.logging.ConsoleHandler.formatter=com.google.enterprise.adaptor.CustomFormatter</pre>

  <li>Run the adaptor using cmd.exe:
  <pre>java -Djava.util.logging.config.file=logging.properties -jar adaptor-sharepoint-YYYYMMDD-withlib.jar</pre>
</ol>

<h4>Running as a service</h4>
  <p>Example service creation on Windows with prunsrv:
  <pre>prunsrv install adaptor-sharepoint --StartPath="%CD%" ^
  --Classpath=adaptor-sharepoint-YYYYMMDD-withlib.jar ^
  --StartMode=jvm --StartClass=com.google.enterprise.adaptor.Daemon ^
  --StartMethod=serviceStart --StartParams=com.google.enterprise.adaptor.sharepoint.SharePointAdaptor
  --StopMode=jvm --StopClass=com.google.enterprise.adaptor.Daemon ^
  --StopMethod=serviceStop --StdOutput=stdout.log --StdError=stderr.log ^
  ++JvmOptions=-Djava.util.logging.config.file=logging.properties</pre>

  <p>Example execution on Linux with jsvc:
  <pre>jsvc -pidfile adaptor.pid -cp adaptor-sharepoint-YYYYMMDD-withlib.jar com.google.enterprise.adaptor.Daemon com.google.enterprise.adaptor.sharepoint.SharePointAdaptor</pre>

<h4>Optional <code>adaptor-config.properties</code> fields</h4>
<dl>
  <dt>
  <code>server.dashboardPort</code>
  </dt>
  <dd>
  Port on which to view web page showing information
  and diagnostics.  Defaults to "5679".
  </dd>
  <dt>
  <code>sharepoint.xmlValidation</code>
  </dt>
  <dd>
  Whether to enable strict checking of XML
  responses using the expected schema.
  Defaults to false.
  </dd>
  <dt>
  <code>sharepoint.maxIndexableSize</code>
  </dt>
  <dd>
  Number of bytes of a document that GSA indexes.  Defaults to 2097152.
  </dd>
  <dt>
  <dt>
  <code>adaptor.namespace</code>
  </dt>
  <dd>
  Namespace used for ACLs sent to GSA.  Defaults to "Default".
  </dd>
  <dt>
  <code>adaptor.docHeaderTimeoutSecs</code>
  </dt>
  <dd>
  Number of seconds adaptor has to start sending content before it is 
  interrupted. Defaults to 30 seconds. Also used as connection timeout value for
  establishing connection with SharePoint server for making web service calls.
  </dd>
  <dt>
  <code>adaptor.docContentTimeoutSecs</code>
  </dt>
  <dd>
  Number of seconds adaptor has to complete sending content before it is 
  interrupted. Timing starts when sending content starts.
  Defaults to 180 seconds. Also used as request timeout value while making
  SharePoint web service call to complete a particular web service call.
  </dd>

  <dt>
  <code>server.port</code>
  </dt>
  <dd>
  Port from which documents are served.  GSA crawls this port.
  Each instance of an adaptor on same machine requires a unique port.
  Defaults to 5678.
  </dd>

  <dt>
  <code>adaptor.incrementalPollPeriodSecs</code>
  </dt>
  <dd>
  Schedule for getting recent updates.  Defaults to 900 seconds which is 15 minutes.
  </dd>
  <br>

</dl>

<br>
<!-- SPUP -->
<h3 id="spuserprofileadaptor">Adaptor for SharePoint User Profiles Deployment</h3>

<p>A single instance of SharePoint User Profile adaptor can have GSA index
a single User Profile Service Application.  An adaptor instance is needed per 
User Profile Service Application.

<h4>Requirements</h4>
<ul>
  <li>GSA 7.0 P1 or higher
  <li>GSA user authentication configured for authentication system in use
    (typically Active Directory)
  <li>Java JRE on computer that runs adaptor (1.6u27 or higher on Linux;
      1.7u6 or higher on Windows)
  <li>SharePoint User Profile adaptor JAR executable
  <li>User account, with Full Control permissions to SharePoint User
      Profile Service Application
  <li>If running adaptor on Linux, user account used for running adaptor 
    should belongs to same domain as SharePoint server. User from child domain 
    or from same forest is not sufficient.
  <li>If running adaptor on Windows 7, Windows Server 2008, Windows Server 2008 R2
    or Windows Server 2012 machine:
    <p>
    <b>Specify LAN Manager Authentication Level Policy</b>
    <ol>
    <li>Run <code>secpol.msc</code> on adaptor machine
    <li>Under Security settings, navigate to Local policies > Security options.
    <li>Select <b>Network security: LAN Manager authentication level</b> and 
        set it to <b>Send LM &amp; NTLM - use NTLMv2 session security if negotiated</b>.   
    </ol>
    </p>
</ul>

<h4>Configure GSA for Adaptor</h4>
<ol>
  <li>Add the IP address of the computer that hosts the adaptor to the <b>List
    of Trusted IP Addresses</b> on the GSA.
    <p>In the GSA's Admin Console, go to <b>Content Sources &gt; Feeds</b>,
    and scroll down to <b>List of Trusted IP Addresses</b>. Add the IP address
    for the adaptor to the list.
  <li>Add the URLs provided by the adaptor to the <b>Follow Patterns</b> on the GSA.
    <p>In the Admin console, go to <b>Content Sources &gt; Web Crawl &gt; 
    Start and Block URLs</b>, and scroll down to <b>Follow Patterns</b>.
    Add an entry like <code>http://adaptor.example.com:5678/doc/
    </code> where <code>adaptor.example.com</code> is the hostname of the
    machine that hosts the adaptor. By default the adaptor runs on port 5678.
  <li>Create and configure a new result collection for user profile documents.
    <p>In the Admin console, go to <b>Index &gt; Collections</b>, in the
    <b>Create New Collection</b> section specify a unique name for the new
    collection. Select <b>Empty</b> for <b>Initial Configuration</b> and click
    <b>Create</b>.
    <p>Then, in the <b>Current Collections</b> section click <b>Edit</b> for the
    newly-created user profile collection. In the <b>Include Content Matching
    the Following Patterns</b> box, add the URL pattern for the adaptor as used
    in step 2 and click <b>Save</b>.
  <li>Configure the default_collection to exclude user profile documents.
    <p>In the Admin console at <b>Index &gt; Collection</b>, in the <b>Current
    Collections</b> section click <b>Edit</b> for
    <code>default_collection</code>. In the <b>Do Not Include Content Matching
    the Following Patterns</b> box, add the URL pattern for the adaptor as used
    in step 2 and click <b>Save</b>.
</ol>

<h4>Configure Adaptor</h4>
<ol>
  <li>Create a file named <code>adaptor-config.properties</code> in the
  directory that contains the adaptor binary. Within the file, provide the
  configuration (replacing bolded items with your real configuration):
  <pre>gsa.hostname=<b>yourgsa.example.com</b>
sharepoint.server=<b>http://yoursharepoint.example.com/</b></pre>

  <li>If the adaptor will <em>not</em> be running as the user account that has
  appropriate SharePoint permissions, then add these additional configuration
  options to <code>adaptor-config.properties</code>:
  <pre>sharepoint.username=<b>YOURDOMAIN\\AdaptorUser</b>
sharepoint.password=<b>uS3R_passWoRD</b></pre>
  
  <li>If the adaptor needs to use <em>Live Authentication</em> to connect 
  to SharePoint, then add these additional configuration options 
  to <code>adaptor-config.properties</code>:
  <pre>sharepoint.username=<b>AdaptorUser Live Authentication Id</b>
sharepoint.password=<b>uS3R_passWoRD</b>
sharepoint.useLiveAuthentication=<b>true</b></pre>
  
  <li>If the adaptor needs to use <em>ADFS Authentication</em> to connect 
  to SharePoint, then add these additional configuration options 
  to <code>adaptor-config.properties</code>:
  <pre>sharepoint.username=<b>AdaptorUser@yourdomain.com</b>
sharepoint.password=<b>uS3R_passWoRD</b>
sharepoint.sts.endpoint=<b>https://adfs.exaple.com/adfs/services/trust/2005/usernamemixed
</b>sharepoint.sts.realm=<b>urn:myserver:sharepoint</b> or <b>https://yoursharepoint.example.com/_trust</b></pre>

  <li>Create a folder named <code>logs</code> in the same directory.

  <li>Create a file named <code>logging.properties</code> in the same directory
  that contains logging configuration:
  <pre>
.level=INFO
handlers=java.util.logging.FileHandler,java.util.logging.ConsoleHandler
java.util.logging.FileHandler.formatter=com.google.enterprise.adaptor.CustomFormatter
java.util.logging.FileHandler.pattern=logs/adaptor.%g.log
java.util.logging.FileHandler.limit=10485760
java.util.logging.FileHandler.count=20
java.util.logging.ConsoleHandler.formatter=com.google.enterprise.adaptor.CustomFormatter</pre>

  <li>Run the adaptor using cmd.exe:
  <pre>java -Djava.util.logging.config.file=logging.properties -jar adaptor-sharepoint-user-profile-YYYYMMDD-withlib.jar</pre>
</ol>

<h4>Running as a service</h4>
  <p>Example service creation on Windows with prunsrv:
  <pre>prunsrv install adaptor-sharepoint-user-profile --StartPath="%CD%" ^
  --Classpath=adaptor-sharepoint-user-profile-YYYYMMDD-withlib.jar ^
  --StartMode=jvm --StartClass=com.google.enterprise.adaptor.Daemon ^
  --StartMethod=serviceStart --StartParams=com.google.enterprise.adaptor.sharepoint.SharePointUserProfileAdaptor
  --StopMode=jvm --StopClass=com.google.enterprise.adaptor.Daemon ^
  --StopMethod=serviceStop --StdOutput=stdout.log --StdError=stderr.log ^
  ++JvmOptions=-Djava.util.logging.config.file=logging.properties</pre>

  <p>Example execution on Linux with jsvc:
  <pre>jsvc -pidfile adaptor.pid -cp adaptor-sharepoint-user-profile-YYYYMMDD-withlib.jar com.google.enterprise.adaptor.Daemon com.google.enterprise.adaptor.sharepoint.SharePointUserProfileAdaptor</pre>

<h4>Optional <code>adaptor-config.properties</code> fields</h4>
<dl>
  <dt>
  <code>server.dashboardPort</code>
  </dt>
  <dd>
  Port on which to view web page showing information
  and diagnostics.  Defaults to "5679".
  </dd>
  <dt>
  <dt>
  <code>profile.setacl</code>
  </dt>
  <dd>
    Whether user profile information is considered restricted
    or public. Defaults to true.
  </dd>
  <dt>
  <code>profile.mysitehost</code>
  </dt>
  <dd>
    Defaults to virtual server.
  </dd>
  <dt>
  <dt>
  <code>adaptor.namespace</code>
  </dt>
  <dd>
  Namespace used for ACLs sent to GSA.  Defaults to "Default".
  </dd>
  <dt>
  <code>adaptor.docHeaderTimeoutSecs</code>
  </dt>
  <dd>
  Number of seconds adaptor has to start sending content before it is 
  interrupted. Defaults to 30 seconds. Also used as connection timeout value for
  establishing connection with SharePoint server for making web service calls.
  </dd>
  <dt>
  <code>adaptor.docContentTimeoutSecs</code>
  </dt>
  <dd>
  Number of seconds adaptor has to complete sending content before it is 
  interrupted. Timing starts when sending content starts.
  Defaults to 180 seconds. Also used as request timeout value while making
  SharePoint web service call to complete a particular web service call.
  </dd>

  <dt>
  <code>server.port</code>
  </dt>
  <dd>
  Port from which documents are served.  GSA crawls this port.
  Each instance of an adaptor on same machine requires a unique port.
  Defaults to 5678.
  </dd>
  <br>

</dl>
</body>
